package com.gklyj.controller.administer;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gklyj.pojo.Position;
import com.gklyj.pojo.Zixun;
import com.gklyj.service.zixunService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

@Controller
@Transactional
public class ZixunController {

    @Autowired
    zixunService zixunService;


    /*
管理员首页资讯栏跳转至详情
 */
    @GetMapping("/welcomezixunDetail")
    public String welcomezixunDetail(@RequestParam("id") String id, Model model){
        Zixun zixun = zixunService.getById(Integer.valueOf(id));
        model.addAttribute("zixun",zixun);
        return "administer/welcome-zixun-detail";
    }


    /*
    跳转招聘单位资讯管理页面
     */
    @GetMapping("/toZpZixunPage")
    public String toZpZixunPage(){
        return "/administer/zp-zixun";
    }

    /*
    跳转管理员资讯管理页面
     */
    @GetMapping("/toAdZixunPage")
    public String toAdZixunPage(){
        return "/administer/ad-zixun";
    }

    /*
    列出招聘单位的资讯信息
     */
    @GetMapping("/findListZpZixun")
    @ResponseBody
    public List<Zixun> ListZpZuxun(){
        return zixunService.findZpZixun();
    }

    /*
    列出管理员的资讯信息
    */
    @GetMapping("/findListAdZixun")
    @ResponseBody
    public List<Zixun> ListAdZuxun(){
        return zixunService.findAdZixun();
    }

    /*
    更具条件查找招聘单位资讯信息
     */
    @PostMapping("/zp_zixun_search")
    @ResponseBody
    public List<Zixun> ZpzixunSearch(@RequestBody Zixun zixun){
        return zixunService.ZpsearchZixun(zixun);
    }

    /*
    更具条件查找管理员资讯信息
    */
    @PostMapping("/ad_zixun_search")
    @ResponseBody
    public List<Zixun> AdzixunSearch(@RequestBody Zixun zixun){
        return zixunService.AdsearchZixun(zixun);
    }

    /*
    管理员查看资讯详情
     */
    @GetMapping("/toZixunDetail")
    public String ZixunDetail(@RequestParam("id") String id, Model model){
        Zixun zixun = zixunService.getById(Integer.valueOf(id));
        model.addAttribute("detail",zixun);
        return "administer/table/qz-zx-detail";
    }

    /*
    管理员可删除招聘单位资讯信息
     */
    @PostMapping("/deleteZpZixun")
    @ResponseBody
    public boolean ZpZixunDelete(@RequestBody Zixun zixun) throws RuntimeException{
        return zixunService.removeById(zixun.getId());
    }

    /*
    管理员可删除多个招聘单位资讯信息
    */
    @PostMapping("/deleteZpZixunList")
    @ResponseBody
    public boolean ZpZixunDeleteList(@RequestBody List<Zixun> zixun) throws RuntimeException{
        Integer sum = zixun.size()-1;
        ArrayList<Integer> arrayList=new ArrayList();
        while (sum>=0){
            arrayList.add(zixun.get(sum).getId());
            sum--;
        }
        return zixunService.removeByIds(arrayList);
    }

    /*
    管理员点击编辑，跳转自己发布的资讯编辑页面
     */
    @GetMapping("/toadZixun")
    public String toAdZixunEditPage(@RequestParam("id") String id,Model model){
        Zixun zixun = zixunService.getById(Integer.valueOf(id));
        model.addAttribute("adzixun",zixun);
        return "administer/table/ad-zx-edit";
    }

    /*
    管理员 保存编辑后的资讯信息
     */
    @PostMapping("/editAdZixun")
    @ResponseBody
    public boolean editAdZixun(@RequestBody Zixun zixun) throws RuntimeException{
//        //获取当前时间，每次修改会改变资讯的时间
//        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式，不显示时分秒
//        Timestamp now= new Timestamp(System.currentTimeMillis());//获取系统当前时间
//        String str= df.format(now);
//        zixun.setTime(str);
        return zixunService.updateById(zixun);
    }

    /*
    上传图片，将图片上传到imgs目录
     */
    @PostMapping("/uploadFile")
    @ResponseBody
    public JSON uploadFile(MultipartFile file, HttpServletRequest request) {
        JSONObject json = new JSONObject();
        String filePath = System.getProperty("user.dir") + "/src/main/resources/static/uploadImages/";//上传到这个文件夹
        File file1 = new File(filePath);
        //如果没有的话创建一个
        if (!file1.exists()) {
            file1.mkdirs();
        }

        //路径+文件名
        //文件名：file.getOriginalFilename()
        String finalFilePath = filePath + file.getOriginalFilename().trim();
        File desFile = new File(finalFilePath);
        if (desFile.exists()) {
            desFile.delete();
        }
        try {
            file.transferTo(desFile);
            json.put("code", 0);
            //将文件名放在msg中，前台提交表单时需要用到
            json.put("msg", file.getOriginalFilename().trim());

            JSONObject json2 = new JSONObject();
            json2.put("src", finalFilePath);
//            json2.put("title", "");
//            json.put("Data", json2);

        } catch (Exception e) {
            System.out.println(e.getMessage());
            json.put("code", 1);
        }
        System.out.println(json);
        return json;
    }

    /*
    跳转管理员资讯添加页面
     */
    @GetMapping("/toAdZixunAdd")
    public String toAdZixunAddPage(){
        return "administer/table/ad-zx-add";
    }

    /*
    管理员添加资讯信息
     */
    @PostMapping("/addAdZixun")
    @ResponseBody
    public boolean AddAdZixun(@RequestBody Zixun zixun) throws RuntimeException{
        System.out.println(zixun);
        //添加资讯创建时间
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式，不显示时分秒
        Timestamp now= new Timestamp(System.currentTimeMillis());//获取系统当前时间
        String str= df.format(now);
        zixun.setTime(str);
        return zixunService.save(zixun);
    }

}